package me.caofeng.dao;

import me.caofeng.enums.ItemStatus;
import me.caofeng.enums.Role;
import me.caofeng.pojo.Page;
import me.caofeng.pojo.Product;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * Copyright © 2017曹峰. All rights reserved.
 *
 * @Prject: mall
 * @Package: me.caofeng.dao
 * @Description: 商品管理
 * @Author: 曹峰 blog.caofeng.me
 * @Date: 2017-06-22 9:10
 * @Version: V1.0
 */
@Repository
public interface ProductMapper {
    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/22 9:19
     * @Description: 添加商品
    */
    int addProduct(Product product);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/23 15:28
     * @Description: 根据Id获取商品信息
    */
    Product getProduct(@Param("id") int id,@Param("role") Integer role);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/23 15:29
     * @Description: 判断商品是否存在
    */
    Integer isProductExists(Integer id);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/25 17:33
     * @Description: 获取商品库存
    */
    Integer getProductStock(Integer id);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/23 15:28
     * @Description: 更改商品信息
    */
    int updateProduct(Product product);

    int updateProductStatus(@Param("id") Integer id , @Param("status") ItemStatus status);

    List<Product> searchProducts(@Param("categoryId") Integer categoryId,
                                 @Param("key") String key ,
                                 @Param("status") Integer status,
                                 @Param("role") Integer role);

    List<Product> searchProductsByPage(
            @Param("categoryId") Integer categoryId, @Param("key") String key ,
            @Param("page") Page page ,@Param("status") Integer status,
            @Param("role") Integer role);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/26 9:08,
     * @Description: 获取商品简要信息，包括id，名字，主图,价格,库存
    */
    Product getProductInfo(Integer id);
}
